%-----------------------------------------------------------------------------
\chapter{Umsetzung}
%-----------------------------------------------------------------------------


\section{Vaadin}
\subsection{Installation}
Die technischen Voraussetzungen um mit Vaadin in Eclipse entwickeln zu können
sind denkbar einfach. 
  \begin{itemize}
    \item [1.] 	
    Es muß das Entwicklungsplugin, siehe "`additional
    files/Vaadin/vaadin-6.8.0.jar"', installiert werden.
    Dieses kann, unter anderem, ganz einfach über den Eclipse Marketplace
    downgeloadet sowie installiert werden \cite{InstallVaadinPlugin}.
    \item [2.] 
    Es muß ein lokaler Servlet Container \cite{ServletWikipedia}, zB Apache
    Tomcat vorhanden sein um Quellcode ausführen lassen zu können. Entsprechende Installationsanleitungen
    werden von der Eclipse IDE zur Verfügung gestellt und hier nicht weiter besprochen.
  \end{itemize}
  
  
\subsection{Einstieg in das Framework}
\subsubsection{Basistutorials}
Der initiale Einstieg in das Entwicklungsframework gestaltet sich aufgrund der
in umfangreichem Ausmaße und jedes grundlegende Feature abdeckenden sowie vom
Hersteller bereitgestellten
  \begin{itemize}
    \item
    Demonstrationsapplikationen \cite{VaadinDemo1} \cite{VaadinDemo2}
    \item 
    Einstiegstutorials \cite{VaadinTutorials}
  \end{itemize}
sehr einfach.
Es werden alle Funktionalitäten sowie Features in kleinen ausführbaren
Beispielen dargelegt sowie am ebenfalls bereitgestellten Sourcecode erklärt.
\subsubsection{Tiefergehender Einstieg}
Um einen Komplettüberblick über das Framework zu erhalten ist das sogenannte
"`Book of Vaadin"' \cite{BookOfVaadin} unumgänglich.
Hier werden, unter anderem, auch tiefergehende Aspekte wie zB "`Google App
Engine Integration"' \cite[S.307]{BookOfVaadin}, "`Developing New Components"'
\cite[S.247]{BookOfVaadin}, "`Advanced Web Application Topics"'
\cite[S.303]{BookOfVaadin} sowie "`Vaadin JPA Container"'
\cite[S.423]{BookOfVaadin} besprochen.
\subsection{Entwicklung des Prototypen}

\subsubsection{Vaadin Basisklasse "`Application"'}
Jede "`Webseite"' bzw. besser Ansicht muß Teil einer "`Vaadin Applikation"'
sein. Diese wird, analog zu der Entwicklung von Desktopapplikationen wie zB
bei Java Swing, erstellt indem von der entsprechenden Basisklasse, bei Vaadin, 
"`com.vaadin.Application"' abgeleitet sowie verschiedene Methoden überschrieben
werden. An dieser Stelle können auch die eigenen Cascading Style Sheet-Dateien
(CSS), um das gewünschte Basislayout zu erhalten, eingebunden werden.
\newline

\lstinputlisting[language=Java]{GensurdatviwiApplication.java}


\subsubsection{Entwicklung der Benutzerschnittstelle}
Die Entwicklung der graphischen Benutzerschnittstelle geschieht ebenfalls analog
zu der Entwicklung von Desktopapplikationen, zB Java Swing \cite{def:JavaSwing}.
Layoutkomponenten für die Benutzerinteraktion, welche als Javaklassen vorliegen, 
(Buttons, Links,Tabellen usw.
usf.) werden abgeleitet und/oder können übergeordneten generalisierteren
Layoutkomponenten, welche ebenfalls als Javaklassen vorliegen, (Horizontallayout, VerticalLayout,
TreeLayut usw. usf)
programmatisch im Javaquelltext als Membervariable zugeordnet werden.
\newline

\lstinputlisting[language=Java]{ApplicationWindowPanel.java}

Dies kann manuell oder mittels Verwendung des, als Teil des Eclipse Plugins zur
Verfügung gestellten, visuellen Designassistenten geschehen.
Im Unterschied zu anderen aktuell verfügbaren Webentwicklungsframeworks wie zB
Java Server Faces \cite{JSF_20101108} müssen also keinerlei HTML, XHTML oder XML
Dateien mehr editiert werden. 



\subsubsection{Entwicklung der Geschäftslogik}
Die gesamte Geschäftslogik wird wie bei anderen J2EE Webentwicklungsframeworks
auch in Java entwickelt.
Jedoch müssen Layoutkomponenten nicht von Geschäftsregelkomponenten
codetechnisch oder durch sonstige Notationen oder Konventionen getrennt werden.
Das Framework unterstützt weiters durchgängig das Observerpattern \cite{Gamma95}
sodass ausgehend von Layoutkomponenten auf der Basis von Events Geschäftsregelkomponenten
aufgerufen werden können.

 
\subsubsection{Ableitung sowie Erstellung eigener Komponenten}
Von jeglichen Vaadin Layoutkomponenten kann abgeleitet werden um eigene
spezialisiertere Layoutkomponenten zu erstellen.
Hierfür werden auch eigene abstrakte Basisklassen zur Verfügung gestellt zB
"`CustomComponent"'.






\subsubsection{Debuggen}
Sollten beim Entwickeln von Applikationen auch bzw. vor allem speziell
betreffend des Layouts Probleme auftreten wird hierfür ein eigener Debugmodus
angeboten. Dieser kann mittels hinzufügen des Parameters "`Debug"' zum Url
welcher die Applikation startet aktiviert werden (siehe Abb.~\ref{VaadinDebug}). 

\begin{figure}[htbp]
    \centering
    \includegraphics [width=16cm,angle=0] {figures/debug.png}
    \caption{Ansicht des Debugfensters vor erstelltem Prototyp}
    \label{VaadinDebug}
\end{figure}



\subsubsection{Bekannte Probleme}
Jegliche Vaadin Applikationen sind immer Sessionservlets.
Während der Entwicklung muß daher beim Url welcher die Applikation im
Webbrowser aufruft der Parameter "`restartApplication"' mit dem Wert "`true"'
("`restartApplication=true"') angegeben werden. Dies muß geschehen um
sichergehen zu können das jegliche Änderungen am Quellcode welche dem
Application Server während der Entwicklung übergeben werden für die
EntwicklerInnen auch wirksam werden. Dies da manche Quellcodeänderungen,
zumindestens vom für die Prototypentwicklung verwendeten Apache Tomcat Servletcontainer,
nicht immer an Sessionservlets weitergereicht werden.
Weiters muß dieser Parameter immer als letzer Parameter im Url übergeben werden!



%-----------------------------------------------------------------------------
\section{Ergebnisse der Umsetzung}
%-----------------------------------------------------------------------------
\subsection{Erstellung des Prototypen}
Die Erstellung des Prototypen war aufgrund der einfachen, intuitiven
Benutzbarkeit des Vaadin Frameworks sowie des gut und einfach zu installierenden
notwendigen Eclipse Plugins recht einfach und das initiale Erlernen des
Frameworks (Lesen der Dokumentationen, Installation des Frameworks,
Ausprobieren von Features, Programmierung des Prototypen) mit eingerechnet nach
45 bis 50  Arbeitstunden erledigt. Dies vor allem auch deshalb da das
Framework sehr gut dokumentiert ist und die Herstellerfirma sehr viele leicht
verständliche Beispiele auf Ihrer Webseite zur Verfügung stellt.
Auch werden sehr viele hochwertige fertige Layoutkomponenten, welche sehr
einfach zu verwenden sind, wie zB Drag and Drop Elemente fertig und verwendbar
vom Framework zur Verfügung gestellt.
\newline
\subsection{Einsatzfähigkeit Vaadin}
Das Vaadin Entwicklungsframework ist daher eindeutig für die Erstellung von
Webapplikationen einsetzbar.
\newline
Dies da
  \begin{itemize}
    \item
    es sehr gut dokumentiert ist.
    \item
    es sehr viel Beispielcode von der Herstellerfirma gibt.
    \item
    es sehr intuitiv und in seinen Konzepten durchgängig ist.
    \item
    es, aus oben genannten Gründen, von EntwicklerInnen welche Java beherrschen
    sehr leicht erlernbar ist.
    \item
    es sehr leicht um eigene Komponenten erweiterbar ist.
    \item
    WebentwicklerInnen keinerlei HTML, XHTML oder XML Code erstellen müssen um
    HTML Webapplikationen zu erstellen.
    \item
    es sehr viele fertige und hochwertige Layoutkomponenten, wie Kalender, 
    gepagte Listen, Bäume sowie Drag and Drop Elemente, gibt welche verwendet
    werden können.
    \item
    es offensichtlich sehr stabil ist da es während der Entwicklung des
    Prototypen keinerlei nicht nachvollziehbare Probleme oder große technische
    Schwierigkeiten gab
  \end{itemize}





